/*
 * Copyright the original author or authors.
 * 
 * Licensed under the MOZILLA PUBLIC LICENSE, Version 1.1 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.mozilla.org/MPL/MPL-1.1.html
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.airlogger.log.control
{	
	import com.airlogger.log.model.LogModel;
	import com.bourre.commands.AbstractCommand;
	
	import flash.events.Event;
	import com.airlogger.event.AirLoggerLogEvent;
	import com.airlogger.log.model.LogData;
	import com.airlogger.utils.LogLevelUtils;
	import com.airlogger.log.model.UIModel;
	import com.airlogger.log.model.AirLoggerModelList;
	import com.bourre.log.PixlibDebug;

	public class AddLog extends AbstractCommand
	{
		override public function execute ( e : Event = null ) : void
		{
			var evt : AirLoggerLogEvent = e as AirLoggerLogEvent;
			var data : LogData = new LogData ( LogLevelUtils.getLevelFromNumber( evt.data.level ),
											   evt.data.message,
											   evt.data.date,
											   evt.data.messageType,
											   evt.data.file /*"SomeClass.as"*/,
											   evt.data.clazz /*"classpath::SomeClass"*/,
											   evt.data.method /*"someMethod"*/, 
											   evt.data.line /*"52"*/,
											   evt.data.customParams /*[]*/ );
			
			var logmodel : LogModel = getOwner().getModelLocator().getModel( evt.id ) as LogModel;
			var uimodel : UIModel = getOwner().getModelLocator().getModel( AirLoggerModelList.UI ) as UIModel;
			
			logmodel.addLog( data );
			
			//getLogger().debug( "log added for " + evt.id );
			
			if( evt.id == uimodel.getFocus() )
			{
				if( logmodel.getFilterMode() == LogModel.EQUALS )
				{
					if( data.level.getLevel() == logmodel.getLogFilter().getLevel() )
						uimodel.fireOnLogAddedEvent( data );
				}
				else if( logmodel.getFilterMode() == LogModel.GREATER_THAN )
				{
					if( data.level.getLevel() >= logmodel.getLogFilter().getLevel() )
						uimodel.fireOnLogAddedEvent( data );
				}
			}
		} 
	}
}